<?php
/*
 * Quark PHP Framework
 * Copyright 2011, Sahib Alejandro Jaramillo Leo.
 * http://quarkphp.com/
 * Licensed under the GNU General Public License (http://www.gnu.org/licenses/gpl.html).
 */
/**
 * Definicion de clase Ajax
 * @filesource
 */
/**
 * Clase para enviar respuestas JSON
 * @author sahib
 */
class Ajax {

	/**
	 * Datos a devolver
	 * @access protected
	 * @var mixed
	 */
	protected $data;

	/**
	 * Flag para saber si ocurrio algun error
	 * @access protected
	 * @var bool
	 */
	protected $error;

	/**
	 * Flag
	 * @access protected
	 * @see Ajax::onAjaxMode()
	 * @var bool
	 */
	protected static $on_ajax;

	/**
	 * Constructor
	 * @access public
	 * @return Ajax
	 */
	public function __construct( ) {

		$this->data = null;
		$this->error = false;
	}

	/**
	 * Devuelve TRUE si esta en modo AJAX, de lo contrario devuelve FALSE
	 * @access public
	 * @return bool flag
	 */
	public static function onAjaxMode( ) {

		if( self::$on_ajax == NULL )
			self::$on_ajax = isset( $_GET['ajax'] ) || isset( $_POST['ajax'] );
		return self::$on_ajax;
	}

	/**
	 * Establece el mensaje de error
	 * @access public
	 * @param string $err_msg Mensaje del error
	 * @return Ajax $this para hacer linking
	 */
	public function setError( $err_msg ) {

		$this->error = $err_msg;
		return $this;
	}

	/**
	 * Establece los datos
	 * @access public
	 * @param stdClass $data Objeto de datos
	 * @return Ajax $this para hacer linking
	 */
	public function setData( $data ) {

		$this->data = $data;
		return $this;
	}

	/**
	 * Devuelve un string con el codigo JSON de la respuesta
	 * @access public
	 * @return string datos codificados en JSON
	 */
	public function getJson( ) {

		return json_encode( array( 
			'error' => $this->error, 
			'data' => $this->data 
		) );
	}

	/**
	 * Envia la respuesta JSON al navegador, estableciendo las cabeceras necesarias.
	 * @access public
	 */
	public function send( ) {

		header( 'content-type:application/json; charset=utf-8' );
		echo $this->getJson( );
	}
}